.\" Manpage for makejdk-any-platform.sh
.TH "2.0.0" "Apache 2"
.SH NAME
makejdk-any-platform.sh
.SH SYNOPSIS
"./makejdk-any-platform.sh [options] version"
.SH DESCRIPTION
This script is the entry point for building (Adoptium) OpenJDK binaries. Building
natively or in a docker container are both supported. This script (and its
supporting scripts) have defaults, but you can override these as needed.

makejdk-any-platform.sh and it's supporting scripts will auto detect the
platform and architecture it is running on and configures the OpenJDK build
accordingly.  The supporting scripts will also download and locally install any
required dependencies for the OpenJDK build, e.g. The ALSA sound and Freetype
font libraries.

Many of the configuration options are passed through to the \fBconfigure\fR and
\fBmake\fR commands that OpenJDK uses to build binaries.  Please see the
appropriate \fIREADME-builds.html\fR file for the OpenJDK source repository
that you are building for further details.

\fBExample:\fR The simplest use case to run is:

"./makejdk-any-platform.sh --docker jdk8u"

This will start a Docker container and build you the latest Java 8 Temurin
binary from the source at https://github.com/adoptium/openjdk-jdk8u

Please visit https://www.adoptium.net for further support

.SH VERSIONS
.TP
.BR jdk8u
Build Java 8, defaults to https://github.com/adoptium/jdk8u
.TP
.BR jdk11u
Build Java 11, defaults to https://github.com/adoptium/jdk11u
.TP
.BR jdk16u
Build Java 16, defaults to https://github.com/adoptium/jdk16u
.TP
.BR jdk
Build JDK (tip), defaults to https://github.com/adoptium/jdk

.SH OPTIONS
.TP
.BR \-b ", " \-\-branch " " \fI<branch>\fR
specify a custom branch to build from, e.g. dev.
For reference, Adoptium GitHub source repos default to the \fI<dev>\fR
branch which may contain a very small diff set to the \fI<master>\fR branch
(which is a clone from the OpenJDK mercurial forest).
.TP
.BR \-B ", " \-\-build-number " " \fI<build_number>\fR
specify the OpenJDK build number to build from, e.g. b12.
For reference, OpenJDK version numbers look like 1.8.0_162-b12 (for Java 8) or
9.0.4+11 (for Java 9+) with the build number being the suffix at the end.
.TP
.BR \-\-build-variant " " \fI<variant_name>\fR
specify a OpenJDK build variant, e.g. openj9.
For reference, the default variant is hotspot and does not need to be specified.
.TP
.BR \-c ", " \-\-clean-docker-build
removes the existing docker container and persistent volume before starting
a new docker based build.
.TP
.BR \-C ", " \-\-configure-args " " \fI<args>\fR
specify any custom user configuration arguments.
.TP
.BR \-\-clean-git-repo
clean out any 'bad' local git repo you already have.
.TP
.BR \-\-create-jre-image
create the legacy JRE image in addition to the JDK image.
.TP
.BR \-\-create-sbom
create the CycloneDX System Bill of Materials (JSON artifact).
.TP
.BR \-\-create-source-archive
create an archive of the sources which got used to build OpenJDK
.TP
.BR \-d ", " \-\-destination " " \fI<path>\fR
specify the location for the built binary, e.g. /path/.
This is typically used in conjunction with \fB<-T>\fR to create a custom path
/ file name for the resulting binary.
.TP
.BR \-D ", " \-\-docker
build OpenJDK in a docker container.
.TP
.BR \-\-debug-docker
debug OpenJDK build script in a docker container. Only valid if \fB-D\fR is selected.
.TP
.BR \-\-disable-shallow-git-clone
disable the default \fB--depth=1\fR shallow cloning of git repo(s).
.TP
.BR \-f ", " \-\-freetype-dir " " \fI<path>\fR
specify the location of an existing FreeType library.
This is typically used in conjunction with \fB<-F>\fR.
.TP
.BR \-\-freetype-build-param " " \fI<parameter>\fR
specify any special freetype build parameters (required for some OS's).
.TP
.BR \-\-freetype-version " " \fI<version>\fR
specify the version of freetype you are building.
.TP
.BR \-F ", " \-\-skip-freetype
skip building Freetype automatically.
This is typically used in conjunction with \fB<-f>\fR.
.TP
.BR \-h ", " \-\-help
print this help.
.TP
.BR \-i ", " \-\-ignore-container
ignore the existing docker container if you have one already.
.TP
.BR \-J ", " \-\-jdk-boot-dir " " \fI<jdk_boot_dir>\fR
specify the JDK boot dir.
For reference, OpenJDK needs the previous version of a JDK in order to build
itself. You should select the path to a JDK install that is N-1 versions below
the one you are trying to build.
.TP
.BR \-k ", " \-\-keep
if using docker, keep the container after the build.
.TP
.BR \-\-make-args " " \fI<args>\fR
specify any custom user make arguments.
.TP
.BR \-\-no\-adopt\-patches
This indicates to the build script that the build does not have Temurin's additional patches applied.
.TP
.BR \-p ", " \-\-processors " " \fI<args>\fR
specify the number of processors to use for the docker build.
.TP
.BR \-r ", " \-\-repository " " \fI<repository>\fR
specify the repository to clone OpenJDK source from,
e.g. https://github.com/karianna/openjdk-jdk8u.
.TP
.BR \-s ", " \-\-source " " \fI<path>\fR
specify the location to clone the OpenJDK source (and dependencies) to.
.TP
.BR \-S ", " \-\-ssh
use ssh when cloning git.
In case of docker build add github.com to ~/.ssh/known_hosts (e.g.: ssh github.com)
if your ssh key has a passphrase, add it to ssh-agent (e.g.: ssh-add ~/.ssh/id_rsa)
.TP
.BR \-\-sign \fI<path>\fR
specify the location for the certificate.  For windows this is the p12
certificate to sign the DLL.
.TP
.BR \-\-sudo
run the docker container as root.
.TP
.BR \-t ", " \-\-tag " " \fI<tag>\fR
specify the repository tag that you want to build OpenJDK from.
.TP
.BR \-\-tmp-space-build
use a temporary workspace if the main one is unavailable.
.TP
.BR \-T ", " \-\-target-file-name " " \fI<file_name>\fR
specify the final name of the OpenJDK binary.
This is typically used in conjunction with \fB<-D>\fR to create a custom file
name for the resulting binary.
.TP
.BR \-u ", " \-\-update-version " " \fI<update_version>\fR
specify the update version to build OpenJDK from, e.g. 162.
For reference, OpenJDK version numbers look like 1.8.0_162-b12 (for Java 8) or
9.0.4+11 (for Java 9+) with the update number being the number after the '_'
(162) or the 3rd position in the semVer version string (4).
This is typically used in conjunction with \fB<-b>\fR.
.TP
.BR \-\-use-jep319-certs
Use certs defined in JEP319 in Java 8/9. Deprecated, has no effect.
.TP
.BR \-\-custom-cacerts " " \fI<true|false>\fR
If true (default), a custom cacerts file will be generated based on Mozilla's
list of CA certificates (see folder security/). If false, the file shipped by
OpenJDK will be used. 
.TP
.BR \-\-vendor " " \fI<vendor>\fR
specify the vendor name
.TP
.BR \-\-vendor-url " " \fI<vendor url>\fR
specify the vendor url
.TP
.BR \-\-vendor-bug-url " " \fI<vendor bug url>\fR
specify the vendor bug url
.TP
.BR \-\-vendor-vm-bug-url " " \fI<vendor vm bug url>\fR
specify the vendor vm bug url
.TP
.BR \-v ", " \-\-version " " \fI<version>\fR
specify the OpenJDK version to build e.g. jdk8u.  Left for backwards compatibility.
.TP
.BR \-V ", " \-\-jvm-variant " " \fI<jvm_variant>\fR
specify the JVM variant (server or client), defaults to server.

.SH EXAMPLE USAGE

Some common example usages:

"./makejdk-any-platform --docker jdk8u"

"./makejdk-any-platform -s /home/openjdk10/src -d /home/openjdk/target -T MyOpenJDK10.tar.gz jdk10"
